package com.hong.starter;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

/**
 * Created by John on 2019/1/25.
 * Spring的事件监听机制，如在服务启动完成后完成一些初始化工作（观察者模式）
 * 在一些业务场景中，当容器初始化完成之后，需要处理一些操作，比如一些数据的加载、初始化缓存、特定任务的注册等等。
 * 这个时候我们就可以使用Spring提供的ApplicationListener来进行操作。
 */
@Component
public class StartupListener implements ApplicationListener<ContextRefreshedEvent>{

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        // 防止启动两次
        if (contextRefreshedEvent.getApplicationContext().getParent() != null){
            //启动Spring容器后执行一些代码
            System.out.println("服务启动。。。");
        }
    }
}
